package cn.tedu.spotms.server.mapper;

import cn.tedu.spotms.server.pojo.dto.ProjectUpdateInfoDTO;
import cn.tedu.spotms.server.pojo.entity.Project;
import cn.tedu.spotms.server.pojo.vo.ProjectSimpleVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 游乐项目持久层
 */
@Repository
public interface ProjectMapper {

    /**
     * 插入"游乐项目"数据
     * @param project 游乐项目
     * @return 受影响的行数
     */
    int insert(Project project);

    /**
     * 根据"游乐项目"id删除其数据
     * @param id "游乐项目"id
     * @return 受影响行数
     */
    int deleteProjectById(Long id);

    /**
     * 修改"游乐项目"数据
     * @param project "游乐项目"数据
     * @return 受影响的行数
     */
    int updateProjectInfo(ProjectUpdateInfoDTO project);

    /**
     * 通过"游乐项目"id修改 "游乐项目"修改时间
     * @param id "游乐项目"id
     * @param gmtModified "游乐项目"修改时间
     * @return 受影响的行数
     */
    int updateProjectGmtModified(@Param("id") Long id,@Param("gmtModified") LocalDateTime gmtModified);

    /**
     * 根据"游乐项目"名字查询简单的项目数据
     * @param name "游乐项目"名字
     * @return 简单的项目数据
     */
    ProjectSimpleVO getProjectByName(String name);

    /**
     * 根据"游乐项目"id查询简单的项目数据
     * @param id "游乐项目"id
     * @return 简单的项目数据
     */
    ProjectSimpleVO getProjectById(Long id);

    /**
     * 查询所有的"游乐项目"数据
     * @return 所有的"游乐项目"数据
     */
    List<ProjectSimpleVO> listProject();


}
